var firefox=document.getElementById&&!document.all;
document.onmousemove=mouseMove;
function mouseMove(e){
var str;
var x,y;
if (firefox)
{

 x = e.clientX;
 y = e.clientY;
}
else
{
 
   x = event.clientX; 
   y = event.clientY; 
}
}

function call_user_func_array(cb, parameters) {
     var func;
 
    if (typeof cb === 'string') {
        func = (typeof this[cb] === 'function') ? this[cb] : func = (new Function(null, 'return ' + cb))();
    }
    else if (Object.prototype.toString.call(cb) === '[object Array]') {
        func = (typeof cb[0] == 'string') ? eval(cb[0] + "['" + cb[1] + "']") : func = cb[0][cb[1]];
    }
    else if (typeof cb === 'function') {
        func = cb;
    }
    if (typeof func !== 'function') {
        throw new Error(func + ' is not a valid function');
    }
return  func.apply(null, parameters) ;

}
function Add(){
    $('#divFormAdd').dialog('option', 'title', 'Them user');
    $('#divFormAdd').dialog('option','height',305);
    $('#divFormAdd').dialog('open');      
}
function CloseFormAdd(){
     $('#divFormAdd').dialog('close');      
}
function SaveFormAdd(oform,cus){
    var params = new Array();
    var elem = oform.elements;
    var flength = elem.length;    
    for(i=0;i<flength;i++){    
        if(elem[i].type !='button'&&elem[i].type !='reset'){
            if(elem[i].type!='checkbox'){
                 params[elem[i].id]=elem[i].value;
            }else{
               if($('#'+elem[i].id).attr('checked')==false){
                   params[elem[i].id]=0;
               }else{
                  params[elem[i].id]=1; 
               }
            }
           
        }
    }
    params['hdSaveStatus']=$('#hdSaveStatus').val();
    params['hdSaveId']=$('#hdSaveId').val();
    params['hdtable']=$('#hdtable').val();
    if(cus){
       xajax_SaveFormCus(params);  
    }else{
      xajax_SaveFormAdd(params);    
    }
       
}
function slideToggletemp(menu){
        var hdmenu = '#'+menu;
        $(hdmenu).val(0); 
        $('#hdmenu').val(hdmenu); 
}

$(function() {
        $( "input:submit, button" ).button();
        $( "a", ".demo" ).click(function() { return false; });
});
function changdisplay(id){
        if(id==1){
        $('#tabs').css('display','none'); 
        $('#tabs2').css('display','');   
        }else{
        $('#tabs').css('display',''); 
        $('#tabs2').css('display','none');   
        }
}

function SearchDataView(oform){
    var params = new Array();
    var elem = oform.elements;
    var flength = elem.length;    
    for(i=0;i<flength;i++){    
       if(elem[i].type !='button'&&elem[i].type !='reset'){
            if(elem[i].type!='checkbox'){
                 params[elem[i].id]=elem[i].value;
            }else{
               if($('#'+elem[i].id).attr('checked')==false){
                   params[elem[i].id]=0;
               }else{
                  params[elem[i].id]=1; 
               }
            }
           
        }
    }
    params['hdSaveStatus']=$('#hdSaveStatus').val();
    params['hdSaveId']=$('#hdSaveId').val();
    params['hdtable']=$('#hdtable').val();
    xajax_SearchDataView(params);    
}


function DeleteData(){
        var arID = new Array();
        var i = 0;
        $('INPUT[name=chkDelete]').each(function(){
            if($(this).attr('checked'))
            {
                arID[i] = $(this).attr('id');
                i++;
            }
        });
        var table = $('#hdtable').val();
        xajax_DeleteData(arID,table);        
}
function CreateCalObject(objID, imgID)
{
    var theObj = document.getElementById(objID);
    if(!theObj)
    {
        tmpObj = document.getElementById(imgID);
        if(tmpObj)
        {
            tmpObj.style.display = "none";
        }
        return(false);
    }

    var objRet = new calendar2(theObj);
    if(!objRet)
    {
        tmpObj = document.getElementById(imgID);
        if(tmpObj)
        {
            tmpObj.style.display = "none";
        }
        return(false);
    }
    objRet.year_scroll = false;
    objRet.time_comp = false;
    return(objRet);
}

function deletea(id){
     tmpObj = document.getElementById(id);
    tmpObj.style.display = "none";
}
var cal1 = CreateCalObject('txtFromDate', 'imgCal1');
var cal2 = CreateCalObject('txtToDate', 'imgCal2');

function fn_CheckAll(chkId,chksubName)
{
   
   var bCheck = document.getElementById(chkId).checked ;   
   $('INPUT[name="'+chksubName+'"]').attr('checked', bCheck);
  // filterChange();     
}
function fn_SubChkChange(chkId,chksubName)
{
   var test = true;    
   $('INPUT[name="'+chksubName+'"]').each(function()
    {
        if($(this).attr('checked')!='checked') 
        {
           test = false ;         
        }
    });
    
    $("#"+chkId).attr('checked', test) ;    
}
// ham nay dung de hien thi cac the div theo id duoc chon
function changeDisplay(id){
    var arrId = new Array();
    arrId[0]=1;
    arrId[1]=3;
    arrId[2]=4;
    arrId[3]=2;
    for(i=0;i<arrId.length;i++){
        $('#divTab'+arrId[i]).css('display','none');
    }
     $('#divTab'+id).css('display','');  
    
}
// hàm dùng để chuyển đổi trạng thái hiển thị hoặc hok hiển thị của div
function toggleDisplay(obj,id){
    if($('#'+id).css('display')=='none'){
       $('#'+id).css('display',''); 
    }else{
       $('#'+id).css('display','none');   
    }
    return false;
}

function formattab(){    
    for(i=0;i<arrId.length;i++){
      changeTab(id);
    }  
}

function changeTab(id){
    $( "#divTab"+id ).tabs({
        cache : false,
        ajaxOptions: {
            error: function( xhr, status, index, anchor ) {
                $( anchor.hash ).html(
                    "Couldn't load this tab. We'll try to fix this as soon as possible. " +
                    "If this wouldn't be a demo." );
            }
        }
    });
}

 function InitGridTable(id){
     
     $("#"+id).tablesorter({ debug: false, sortList: [[0, 0]], widgets: ['zebra', 'columnHighlight'] })
                .tablesorterPager({ container: $("#pagerOne"), positionFixed: false });
     
 }
 
 function changeActive(id){
     var name = id;
   if($('#'+name).attr('src')=='images/icons/icon-active.gif'){
      $('#'+name).attr('src','images/icons/icon-deactivated.gif') ;
      $('#'+name).attr('title','Kích hoạt') ;
   }else{
      $('#'+name).attr('src','images/icons/icon-active.gif') ;
      $('#'+name).attr('title','Bỏ kích hoạt') ; 
   }
}

function initForm(formid){
   $('#' + formid).find('.lblRequired').prepend('<img width="12" height="12" style="float:right" src="adagps.com/images/menu/constraint_3.png">');  
  // $('#' + formid).find('.datepicker').attr('title',TEXT_DATEPICKER );
   $('#' + formid).find('.dpkstart').attr('title',TEXT_DATEPICKER_START );
   $('#' + formid).find('.dpkstart').attr('alt',TEXT_DATEPICKER_START );
   $('#' + formid).find('.dpkend').attr('title',TEXT_DATEPICKER_END );
   $('#' + formid).find('.dpkend').attr('alt',TEXT_DATEPICKER_END );
   $('#' + formid).find('.isNumber').attr('title', NUMBER_REQUIRED);
   $('#' + formid).find('.isNumber').css('text-align', 'right');
   $('#' + formid).find('.isEmail').attr('title', EMAIL_REQUIRED);
   $('#' + formid).find('.cbbRequired').attr('title', CBB_REQUIRED);
   $('#' + formid).find('.isName').attr('title', NAME_REQUIRED);
   $('#' + formid).find('.isChar').attr('title', CHAR_REQUIRED);
   $('#' + formid).find('.txtRequired').bind('focus',function(){
      // $(this).removeClass('txtFormatRequired');       
       if($(this).val()==TEXT_REQUIRED){
          $(this).val('') ;
       }

   });   
/*   $('#' + formid).find('.isNumber').bind('keypress',function(evt){
        var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode <= 31 || ALLOWCHARCODE.in_array(charCode)|| NUMBERCHARCODE.in_array(charCode))
            return true;
         return false; 
   });  */
   
    $('#' + formid).find('.isNumber').each(function(){
        $(this).jStepper({minValue:0});
   });
   
   $('#' + formid).find('.isName').bind('keypress',function(evt){
        var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode <= 31|| ALLOWCHARCODE.in_array(charCode) || UPPERCHARCODE.in_array(charCode) 
         || LOWERCHARCODE.in_array(charCode)|| NUMBERCHARCODE.in_array(charCode)
         || SPECIELCHARCODE.in_array(charCode) )
            return true;
         return false; 
   });
   $('#' + formid).find('.isChar').bind('keypress',function(evt){
        var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode <= 32  || ALLOWCHARCODE.in_array(charCode)  || UPPERCHARCODE.in_array(charCode)||LOWERCHARCODE.in_array(charCode) )
            return true;
         return false; 
   });    
    
   $('#' + formid).find('.txtRequired').bind('blur',function(){
       
       if($(this).val()!=''){
           $(this).css('background-color', 'white');
       }
   });
   
    $('#' + formid).find('.cbbRequired').bind('change',function(){
       if($(this).val()!=''){
           $(this).css('background-color', 'white');
       }
   });

   $('#' + formid).find('.txtRequired').attr('title',TEXT_REQUIRED);  
   $('#' + formid).find('.txtRequired').attr('alt',TEXT_REQUIRED);  
}

function checkValidate1(obj){
    if(!$(obj).hasClass('validate')){
        return true;
    }
    var parent =  $(obj).parents('table:eq(0)');
    var test=true;
       $(parent).find('.txtRequired').each(function(){
           if($(this).css('display')!='none'&&$(this).attr('disabled')!='disabled'){
               var val = $.trim($(this).val());
               if(val==''){
                 $(this).css('background-color', COLOR_ALERT); 
                 test = false; 
               }
           }
          
       });
       
       $(parent).find('.cbbRequired').each(function(){
           if($(this).css('display')!='none'&&$(this).attr('disabled')!='disabled'){
               var val = $.trim($(this).val());
               if(val==''||val=='-1'){
                 $(this).css('background-color', COLOR_ALERT); 
                 test = false; 
               }
           }
       }); 
        
       $(parent).find('.isEmail').each(function(){
           if($(this).css('display')!='none'&&$(this).attr('disabled')!='disabled'){
               var val = $.trim($(this).val());
               if(!ExpEmail.exec(val)){
                 $(this).css('background-color', COLOR_ALERT); 
                 test = false; 
               }
           }
       });
       $(parent).find('.isFloat').each(function(){
           if($(this).css('display')!='none'&&$(this).attr('disabled')!='disabled'){
               var val = $.trim($(this).val());
               if(!ExpFloat.exec(val)){
                 $(this).css('background-color', COLOR_ALERT); 
                 test = false; 
               }
           }
       });
       $(parent).find('.isDate').each(function(){
           if($(this).css('display')!='none'&&$(this).attr('disabled')!='disabled'){
               var val = $.trim($(this).val());
               if(!ExpDayMonthYear.exec(val)){
                 $(this).css('background-color', COLOR_ALERT); 
                 test = false; 
               }
           }
       });
       $(parent).find('.isPhoneList').each(function(){
           var val = $.trim($(this).val());           
           if(!ValidatePhoneList(val)){
             $(this).css('background-color', COLOR_ALERT); 
             test = false; 
           }
       });
       
       return test;      
}


function checkValidateReport(obj){
    if(!$(obj).hasClass('validate')){
        return true;
    }
    var parent =  $(obj).parents('table:eq(0)');
    var test=true;
       $(parent).find('.txtRequired').each(function(){
           var val = $.trim($(this).val());
           if(val==''){
             $(this).css('background-color', COLOR_ALERT); 
             test = false; 
           }
       }); 
       $(parent).find('.isEmail').each(function(){
           var val = $.trim($(this).val());
           if(!ExpEmail.exec(val)){
             $(this).css('background-color', COLOR_ALERT); 
             test = false; 
           }
       });
       $(parent).find('.isFloat').each(function(){
           var val = $.trim($(this).val());
           if(!ExpFloat.exec(val)){
             $(this).css('background-color', COLOR_ALERT); 
             test = false; 
           }
       });
       $(parent).find('.isDate').each(function(){
           var val = $.trim($(this).val());
           if(!ExpDayMonthYear.exec(val)){
             $(this).css('background-color', COLOR_ALERT); 
             test = false; 
           }
       });
       $(parent).find('.isPhoneList').each(function(){
           var val = $.trim($(this).val());           
           if(!ValidatePhoneList(val)){
             $(this).css('background-color', COLOR_ALERT); 
             test = false; 
           }
       });       
       return test;      
}



function checkValidate(formid){
    var test=true;
       $('#' + formid).find('.txtRequired').each(function(){
           var val = $.trim($(this).val());
           if(val==''||val==TEXT_REQUIRED){
             $(this).css('background-color', COLOR_ALERT); 
             test = false; 
           }
       }); 
       $('#' + formid).find('.isEmail').each(function(){
           var val = $.trim($(this).val());
           if(val!=''){
               if(!ExpEmail.exec(val)){
                 $(this).css('background-color', COLOR_ALERT); 
                 test = false; 
               }  
           }

       });
       $('#' + formid).find('.isFloat').each(function(){
           var val = $.trim($(this).val());
           if(!ExpFloat.exec(val)){
             $(this).css('background-color', COLOR_ALERT); 
             test = false; 
           }
       });
       $('#' + formid).find('.isDate').each(function(){
           var val = $.trim($(this).val());
           if(!ExpDayMonthYear.exec(val)){
             $(this).css('background-color', COLOR_ALERT); 
             test = false; 
           }
       });
       
       $('#' + formid).find('.isPhoneList').each(function(){
           var val = $.trim($(this).val());           
           if(!ValidatePhoneList(val)){
             $(this).css('background-color', COLOR_ALERT); 
             test = false; 
           }
       });
       
       $('#' + formid).find(':input').attr('disabled','');
       return test;
      
}

Array.prototype.in_array = function(p_val) {
    for(var i = 0, l = this.length; i < l; i++) {
        if(this[i] == p_val) {
            return true;
        }
    }
    return false;
}


function changeWaiting(type){
    if(type==0){
       $('#divWaiting').css('display','block'); 
       $(':input').each(function(){
          $(this).attr('disabled','disabled');
       }) ;
    }else{
       $('#divWaiting').css('display','none');
       $(':input').removeAttr('disabled'); 
    }
}

function filterChange(){    
      $("div.dataTables_scrollBody").find(".checkOne").each( function() {
      var tr = $(this).parent().parent();
     if ( $(this).attr("checked") )
      {
         $(tr).addClass("row_selected");
      }
      else
      {  
        $(tr).removeClass("row_selected");
      }                                           
    });
}

 function getParams(obj){
     var result = new Array();
     var parent =  $(obj).parents('.info');
     $(parent).find(':input:not(:button)').each(function(){
         try{
             var arr = new Array();
             arr = $(this).attr('id').split('_');             
             id = arr[0];
             if(arr.length>1){
                id = arr[1];  
             }
            if($(this).attr('type')=='radio'||$(this).attr('type')=='checkbox'){
                    if($(this).attr('checked')){
                        if($(this).attr('type')=='radio'){
                           //nameobj = $(this).attr('name'); 
                            arrname = $(this).attr('name').split('_');             
                             name = arrname[0];
                             if(arrname.length>1){
                                name = arrname[1];  
                             }                            
                            result[name]=$.trim($(this).val());
                        }else{
                             result[id] = 1; 
                        }
                   
                    }else{
                        if($(this).attr('type')!='radio'){
                          result[id] = 0;   
                        }                       
                    }
                           
            }else{
                
               result[id]=$(this).val(); 
               if($(this).hasClass('txtTien')){
                 result[id] = replaceTien(result[id]);                 
               }               
               if($(this).hasClass('datereport')){
                 result[id] = ConvertoDateEN(result[id]);                 
               }
               
            }
         }catch(err){
            // alert(1);
             alert(err);
         }
        
     })  ;    
     return result;
 }

 function checkAll(){
      $('.checkAll').each(function(){
           var tblparent = $(this).parents('table:eq(1)');
              var test = $(this).attr('checked');  
              
              $(tblparent).find('.checkOne').each(function(){
                  $(this).attr('checked',test);  
              });
      });
      //filterChange(); 
 }
 
  function checkOne(){      
      //var test = true;
      $('div.divGrid').each(function(){
          var test = true;
          var display = 'none';
          var flg = false;
          $(this).find('.checkOne').each(function(){
                    flg = true;
                      if(!$(this).attr('checked')){
                         test=false; 
                      }else{
                         display = ''; 
                      }
                    
          });
           $(this).find('.checkAll').attr('checked',test&&flg);
           $(this).find('.deleteAll').css('display',display);
                     
      });  

      //filterChange(); 
 }
 function deleteRowlogic(){
    var anSelected = fnGetSelected( oTable );
    for ( var i=0 ; i<anSelected.length ; i++ )
    {
    oTable.fnDeleteRow( anSelected[i] );
    } 
 }
 
function createMarker(lat,lng)
{    
   map.clearOverlays();
   map.addOverlay(new GMarker(new GLatLng(lat,lng)));
   map.panTo(new GLatLng(lat,lng));
   $("#hdlat").val(lat);
   $("#hdlng").val(lng); 
}

function changeCssEdit(id){
    return false;
}

function removeCssClass(parent_id,classname){
    //hien thục code sau; bỏ các class có tên là classname trong các con của parent_id
    //alert('se hien thuc code sau');
}
function changeUpdate(prefix,id){    
     $('#'+prefix+'_hdEdit').val(1);        
     $('#'+prefix+'_hdId').val(id);     
}

function createReport(divId){
    arr = divId.split('-');
    $('#'+divId).attr('width','800px');
    var tableId = arr[0]+'_tbl_' + arr[1];
    $('#'+divId+' table:eq(0)').attr('id',tableId);
    $('#'+tableId).attr('width','100%');
    
    dataTableObj.CreatDataTable(tableId);
}

function GetToday(){
    var now = new Date();
    var y = now.getFullYear();
    var m = parseInt(now.getMonth()) + 1; 
    var d = now.getDate();
    m = (m< 10?'0'+m:m);
    d = (d< 10?'0'+d:d);
    var YMD = y+'-'+m+'-'+d;
    return YMD;  
}


function GetCurrentDay(){
    var now = new Date();
    var d = now.getDate();
    return d; 
}
function GetCurrentMonth(){
     var now = new Date();
    var m = parseInt(now.getMonth()) + 1; 
    return m; 
}
function GetCurrentYear(){
    var now = new Date();
    var y=now.getFullYear();
    return y; 
}


function GetStartDay(){
    var now = new Date();
    var y = now.getFullYear();
    var m = parseInt(now.getMonth()) + 1; 
    m = (m< 10?'0'+m:m);
    var YMD = y+'-'+m+'-01';
    return YMD;  
}

function GetHHMM(){
    var now = new Date();
    var hh = now.getHours();
    var mm = now.getMinutes(); 
    return hh+'h'+mm;     
}

function focusbutton(index){
    $('.cls_focus').removeClass('cls_focus');
    $('#mainbtn-'+index).addClass('cls_focus');
    $('#mainbtn-'+index).addClass('ui-state-hover');
    if(hasChange && hasScrMngr){
        hasChange = false;
        changeWaiting(0);
        xajax_fmfrmmanager_init(); 
    }
}

function createArrConditionExeport(reportId,strTitle,strValue){
    
}
////////////////////////////////////// format number
// onkeypress="validate(event)" onkeyup="NumericDotOnly(this)"
$(function() {

//    $( ".txtTien").live().keypress(function(event) {
//        validate(event);
//    });
    $( ".txtTien").live('keydown',function(event) {
        validate(event);
    });
    $( ".txtTien").live('keyup',function() {
        NumericDotOnly(this);
    });
    //$('.txtTien').bind('keyup', function() { NumericDotOnly(this); } );
});

function NumericDotOnly(obj)
{
    obj.value =numberFormat(obj.value);
}
function numberFormat(nr){
    //remove the existing ,
    var regex = /,/g;
    nr = nr.replace(regex,'');
    //force it to be a string
    nr += '';
    //split it into 2 parts  (for numbers with decimals, ex: 125.05125)
    var x = nr.split('.');
    var p1 = x[0];
    var p2 = x.length > 1 ? '.' + x[1] : '';
    //match groups of 3 numbers (0-9) and add , between them
    regex = /(\d+)(\d{3})/;
    while (regex.test(p1)) {
        p1 = p1.replace(regex, '$1' + ',' + '$2');
    }
    //join the 2 parts and return the formatted number
    return p1;
}
function validate(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
     if(key===8) {return;} //neu xoa lui thi cho phep
    key = String.fromCharCode( key );
    var regex = /[0-9]|\./;
    if( !regex.test(key) ) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault();
    }
}

function replaceTien(src){
    return src.replace(/,/g,'');
}
/*
 Chuyển một chuyển kiểu ngày tháng bất kì sang kiểu ngày tháng theo định dạng yyyy/mm/dd 
*/
function ConvertoDateEN(dt){
   var arr = dt.split(' ');
    
    var t = "";
    
    // Time
    if (arr.length > 1) 
    {
        t = arr[1];            
    }
    // Date
    arr1 = arr[0].split('/');
    if(arr1.length>1){
       var s = "";
        if (t != "") 
        {
            s = arr1[2] + "-" + arr1[1] + "-" + arr1[0] + " " + t;
        }
        else
        {
           s = arr1[2] + "-" + arr1[1] + "-" + arr1[0];
        }  
    }else{
        return dt;
    }
    
   
    
    return s;
    
}

function checkListPhone(strphone,checkEmty){// kiểm tra xem chuổi đưa vào có đúng định dạng số điện thoại hay ko
      var $phonenumber = strphone;
      if($phonenumber.length==0 && checkEmty){
          alert('Vui lòng nhập số điện thoại cần gửi');
          return false;
      } 
   var arrPhone = new Array();
   arrPhone = $phonenumber.split(";");

   flg = true; 
   for(var i = 0;i<arrPhone.length;i++){
     if(!ExpPhone.test(arrPhone[i])){
         flg = false;
         break;
     }  
   }
   if(!flg){
     alert('Vui lòng nhập (danh sách) số điện thoại cho chính xác');
          return false;  
   }
   return true;   
}

function ValidatePhoneList(strphone){// kiểm tra xem chuổi đưa vào có đúng định dạng số điện thoại hay ko
     
      var $phonenumber = strphone;
      if($phonenumber.length==0){          
          return true;
      } 
   var arrPhone = new Array();
   arrPhone = $phonenumber.split(";");

   flg = true; 
   for(var i = 0;i<arrPhone.length;i++){
     if(!ExpPhone.test(arrPhone[i])){
         flg = false;
         break;
     }  
   }

   return flg;   
}

function checkStatusSMS(){
    if(STATUS_SMS ==0) return true;
    switch(STATUS_SMS){
        case 1: alert('Đang cập nhật chương trình nhắn tin');break;
        case 2: alert('Chương trình nhắn tin đang gặp sự cố');break;
        default: alert('Chương trình nhắn tin đang được bảo trì');break;    
    }
    return false;
}
//success  =0 :Lưu lại thất bại
//success  =1 :Thêm mới thất bại
//status  =1 :Update
//status  =0 :Thêm mới
//formId   :Id của form vừa submit


function checkUpdateStatus(success,formId,status){
    if(success==0){
        if(status=='1'){
          alert('Lưu thất bại, vui lòng thử lại!');  
        }else{
          alert('Thêm mới thất bại, vui lòng thử lại!');  
        }
    }else{
        $('#'+formId+'_submit').html(NAME_INSERT);
        $('#'+formId+'_hdEdit').val(0);
        $('#'+formId+'_hdId').val('');
    }
/*    switch(status){
      case -2: alert('Lưu thất bại, vui lòng thử lại!');break;  
      case -1: alert('Thêm mới thất bại, vui lòng thử lại!');break;  
      default: 
      $('#'+formId+'_submit').html(NAME_INSERT);
      $('#'+formId+'_hdEdit').val(0);
      $('#'+formId+'_hdId').val('');
      break;
    }*/
    changeWaiting(1);
    
}

function formatMoney(result){
    result +='';
    return result.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"); 
}

function strip(html)
{
   var tmp = document.createElement("DIV");
   tmp.innerHTML = html;
   return tmp.textContent || tmp.innerText || "";
}
 
function checkHtmlTag(html)
{
   var tmp = document.createElement("DIV");
   tmp.innerHTML = html;
   str_new = tmp.textContent || tmp.innerText || "";
  if(str_new!=html){
      return true; 
  }
  return false;
}

function createTab(id){
    $('#' + id ).tabs({ 
        cache: true
    });
    resizePageP(id);
    $(window).resize(function(){
    resizePageP(id);
     });
        
}
function resizePageP(id) {
  var h = $('#' + id ).parent().parent().parent().height();
  $('#' + id).height(h - 14);
  $('#' + id).find('.ui-tabs-panel').height(h - 50);
 }
 
 // từ bên file function.js mang qua
 
 // File function.js: chua cac ham dung chung
/**
* checkDate(): kiểm tra FromDate có lơn hơn ToDate không, nếu lớn hơn trả về true.
*
**/


//==========================================
/**
* Hàm kiểm tra hai control fromid và toid có phải là kiểu ngày tháng hay không. và số ngày chênh lệch có đúng yêu cầu không
fromid: id control ngày bắt đầu
toid: id control ngày kết thúc
*/
 
function checkDate(fromid, toid, day)
{
    $objfrom = $('#'+fromid);
    $objto   = $('#'+toid);
    
    from     = $objfrom.val();
    to       = $objto.val();
    if(!isDate(from)){
        alert('Vui lòng nhập lại thời gian bắt đầu!');
        $objfrom.css('background-color',COLOR_ALERT);
        $objfrom.focus();
        return false;
    }    
    
    if(!isDate(to)){
        alert('Vui lòng nhập lại thời gian kết thúc!');
        $objto.css('background-color',COLOR_ALERT);  
        $objto.focus();
        changeWaiting(1);
        return false;
    }
    
    
    
    var df = Date.parse(toDate(from));
    var dt = Date.parse(toDate(to));

    if (day==null)
        day=0;

    var ns = ((dt - df) / 3600000 / 24);
     if(ns<0){
         alert('Vui lòng nhập thời gian bắt đầu nhỏ hơn thời gian kết thúc!');
         $objfrom.css('background-color',COLOR_ALERT); 
         $objfrom.focus();
         changeWaiting(1);
         return false;
     }
    if(ns > day)                    
    {
        alert('Thời gian bắt đầu với thời gian kết thúc cách nhau tối đa '+ day +' ngày!');
        $objfrom.focus();
        changeWaiting(1);
        return false;
    }
    return true;
}


function fn_checkValidation(d)
{
    var dateComp = d.split("/"); 
    dayInmonth = new Array(12);
    dayInmonth[0]=31;
    dayInmonth[1]=29;
    dayInmonth[2]=31;
    dayInmonth[3]=30;
    dayInmonth[4]=31;
    dayInmonth[5]=30;
    dayInmonth[6]=31;
    dayInmonth[7]=31;
    dayInmonth[8]=30;
    dayInmonth[9]=31;
    dayInmonth[10]=30;
    dayInmonth[11]=31;
    
     if (dateComp[2] % 4 == 0)
        {
            dayInmonth[1]=29;
        }
     else
        {
            dayInmonth[1]=28;        
        }
     if (dateComp[0] > dayInmonth[dateComp[1]-1] || dateComp[0] < 1)
        {
           
            return false;
        }
     
     return true;   
        
}

function toDate(dt)
{
    try
    {
        var arr = dt.split("/");
        return arr[1] + '/' + arr[0] + '/' + arr[2];
    }
    catch(e)
    {
        return dt;
    }
}

//Start Trung Add 21/10/2010
function formatddmmyyyy(dt){
    var dttemp = dt.value;
    var arr = dttemp.split(" ");
    var result = dttemp;
    if(arr.length==2){            
        result = fmddmmyyyy(arr[0])+" "+fmddHHMMSS(arr[1]);
    }else if(arr.length==1){
        if(dttemp.length>=14){
            datetemp = dttemp.substring(0,dttemp.length-8);
            timetemp = dttemp.substring(dttemp.length-8,dttemp.length);
            result = fmddmmyyyy(datetemp)+" "+fmddHHMMSS(timetemp);
        }else{
            result = fmddmmyyyy(dttemp);
        }
    }
    dt.value = result;    
}

function fmddmmyyyy(dt){    
    ddmmyyyy = /^((0[1-9]|([1-2][0-9])|3[0-1]))((0[1-9])|(1[0-2]))\d{4}$/;
    dmyyyy   = /^([1-9])([1-9])\d{4}$/;
    dmmyyyy  = /^([1-9])(1[0-2])\d{4}$/;
    ddmyyyy  = /^(([1-2][0-9])|3[0-1])([1-9])\d{4}$/;
    ddmmyy   = /^((0[1-9]|([1-2][0-9])|3[0-1]))((0[1-9])|(1[0-2]))\d{2}$/;    
    Fulldmy  = /^(([1-9]|0[1-9]|([1-2][0-9])|3[0-1]))\/(([1-9])|(0[1-9])|(1[0-2]))\/\d{4}$/;
    NoFuldmy = /^(([1-9]|0[1-9]|([1-2][0-9])|3[0-1]))\/(([1-9])|(0[1-9])|(1[0-2]))\/\d{2}$/;
    var dttemp = dt;
    try
    {
        var temp="";
        if(Fulldmy.exec(dttemp)|| NoFuldmy.exec(dttemp)){
            temp = dttemp;
        }else if(ddmmyyyy.exec(dttemp)){    
                temp = dttemp.substring(0,2)+"/"+dttemp.substring(2,4)+"/"+dttemp.substring(4,8);
        }
        else if(dmmyyyy.exec(dttemp)){
            temp = dttemp.substring(0,1)+"/"+dttemp.substring(1,3)+"/"+dttemp.substring(3,7);
            //return fmFullDate(temp);                    
        }
        else if(ddmyyyy.exec(dttemp)){
            temp = dttemp.substring(0,2)+"/"+dttemp.substring(2,3)+"/"+dttemp.substring(3,7);
            //return fmFullDate(temp);
            
        }
        else if(dttemp.length==6){
            //alert('vao 6');
            var yy=dttemp.substring(2,4);
            if(yy=='20'||yy=='21'||yy=='19'){
                 temp = dttemp.substring(0,1)+"/"+dttemp.substring(1,2)+"/"+dttemp.substring(2,6);                                 
            }else if(ddmmyy.exec(dttemp)){                
                temp = dttemp.substring(0,2)+"/"+dttemp.substring(2,4)+"/"+dttemp.substring(4,6);                                        
            }        
        }
        if(temp!=""){
            return fmFullDate(temp);
        }else{
            return dt;
        }
        
    }
    catch(e)
    {
        return dt;
    }
    
}

function fmddHHMMSS(input){    
    FullHMS   = /^([0-9]|0[0-9]|1[0-9]|2[0-4]):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])$/ ;
    NoFullHMS = /^([0-9]|[0[0-9]|1[0-9]|2[0-4])([0-5][0-9])([0-5][0-9])$/ ;
    var dttemp = input;
    try
    {
        var temp="";
        if(FullHMS.exec(dttemp)){
            temp = dttemp;
        }else if(NoFullHMS.exec(dttemp)){    
            lenInput = dttemp.length;
            temp = dttemp.substring(0,lenInput-4)+":"+dttemp.substring(lenInput-4,lenInput-2)+":"+dttemp.substring(lenInput-2,lenInput);
        }
        if(temp!=""){
            return fmFullTime(temp);
        }else{
            return input;
        }
    }
        catch(e)
    {
        return input;
    }    
}

function fmFullTime(dt){
    try
    {
        var arr = dt.split(":");
        var HH  = arr[0];
        var MM  = arr[1];
        var SS  = arr[2];
        if(HH.length==1){
            HH ='0'+HH;
        }
        if(MM.length==1){
            MM ='0'+MM;
        }
        if(SS.length==1){
            SS ='0'+SS;
        }    
        return HH + ':' + MM + ':' + SS;
    }
    catch(e)
    {
        return dt;
    }
}

function fmFullDate(dt){
    try
    {
        var arr = dt.split("/");
        var dd  = arr[0];
        var mm  = arr[1];
        var yyyy  = arr[2];
        if(dd.length==1){
            dd ='0'+dd;
        }
        if(mm.length==1){
            mm ='0'+mm;
        }
        if(yyyy.length==2){
            yyyy ='20'+yyyy;
        }    
        return dd + '/' + mm + '/' + yyyy;
    }
    catch(e)
    {
        return dt;
    }
}
//End Trung Add 21/10/2010

/*
Ham convert 1 chuoi ngay (dd/MM/yyyy hoac dd/MM/yyyy HH:mm:ss)
den 1 chuoi ngay (yyyy/MM/dd hoac yyyy/MM/dd HH:mm:ss)

@dt: yyyy/MM/dd hoac yyyy/MM/dd HH:mm:ss
*/
function ConvertDateTime(dt) 
{    
    var arr = dt.split(' ');
    
    var t = "";
    
    // Time
    if (arr.length > 1) 
    {
        t = arr[1];            
    }
    // Date
    arr1 = arr[0].split('/');
    
    var s = "";
    if (t != "") 
    {
        s = arr1[2] + "/" + arr1[1] + "/" + arr1[0] + " " + t;
    }
    else
    {
       s = arr1[2] + "/" + arr1[1] + "/" + arr1[0];
    }
    
    return s;
}

/*
So sanh 2 chuoi ngay.
@dtFrm: Tu Ngay (dd/MM/yyyy hoac dd/MM/yyyy HH:mm:ss)
@dtTo: Den Ngay (dd/MM/yyyy hoac dd/MM/yyyy HH:mm:ss)
Neu dtFrm > dtTo ham tra va gia tri FALSE, nguoc lai tra ve gia tri TRUE
*/
function CompareDateTime(dtFrm, dtTo)  {
    var sDtFrm = ConvertDateTime(dtFrm);    
    if(dtTo=='now'){
        var currentTime = new Date();
        var month = currentTime.getMonth() + 1;
        var day = currentTime.getDate();
        var year = currentTime.getFullYear();
        var tempdate =  day + "/" + month + "/" + year;       
        var timeTo = '';
        if(dtFrm.length>15){
            //var hour = currentTime.getHours() + 1;
           // var minute = currentTime.getMinutes();
           // var second = currentTime.getSeconds();
           // var temptime =  hour + ":" + minute + ":" + second;
           // timeTo = " "+fmFullTime(temptime);
            timeTo = " 23:59:59";
        }
       
        dtTo = fmFullDate(tempdate)+timeTo;                         
    }
    var sDtTo = ConvertDateTime(dtTo);
    if (sDtFrm > sDtTo) 
    {
        return false;
    }
    
    return true;
}

/* Start - Trim */
function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
/* End - Trim */

// Check e-mail
function validateEmail(id) {    
    return emailPattern.test(id);
}

function checkVNPhone(sNumber)
{
    var bResult = false;
    for(i = 0; i < 41; i++)
    {
        if(arrReg[i].test(sNumber))
        {
            bResult = true;
            break;
        }
    }
    return bResult;
}

function checkInvalidDate(date)
{

    return ExpFullTime.test(date);
}

/*
 * Adjust the behavior of the dataProcessor to avoid styles
 * and make it look like FCKeditor HTML output.
 */
function configureHtmlOutput( ev )
{
    var editor = ev.editor,
        dataProcessor = editor.dataProcessor,
        htmlFilter = dataProcessor && dataProcessor.htmlFilter;

    // Out self closing tags the HTML4 way, like <br>.
    dataProcessor.writer.selfClosingEnd = '>';

    // Make output formatting behave similar to FCKeditor
    var dtd = CKEDITOR.dtd;
    for ( var e in CKEDITOR.tools.extend( {}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent ) )
    {
        dataProcessor.writer.setRules( e,
            {
                indent : true,
                breakBeforeOpen : true,
                breakAfterOpen : false,
                breakBeforeClose : !dtd[ e ][ '#' ],
                breakAfterClose : true
            });
    }

    // Output properties as attributes, not styles.
    htmlFilter.addRules(
        {
            elements :
            {
                $ : function( element )
                {
                    // Output dimensions of images as width and height
                    if ( element.name == 'img' )
                    {
                        var style = element.attributes.style;

                        if ( style )
                        {
                            // Get the width from the style.
                            var match = /(?:^|\s)width\s*:\s*(\d+)px/i.exec( style ),
                                width = match && match[1];

                            // Get the height from the style.
                            match = /(?:^|\s)height\s*:\s*(\d+)px/i.exec( style );
                            var height = match && match[1];

                            if ( width )
                            {
                                element.attributes.style = element.attributes.style.replace( /(?:^|\s)width\s*:\s*(\d+)px;?/i , '' );
                                element.attributes.width = width;
                            }

                            if ( height )
                            {
                                element.attributes.style = element.attributes.style.replace( /(?:^|\s)height\s*:\s*(\d+)px;?/i , '' );
                                element.attributes.height = height;
                            }
                        }
                    }

                    // Output alignment of paragraphs using align
                    if ( element.name == 'p' )
                    {
                        style = element.attributes.style;

                        if ( style )
                        {
                            // Get the align from the style.
                            match = /(?:^|\s)text-align\s*:\s*(\w*);/i.exec( style );
                            var align = match && match[1];

                            if ( align )
                            {
                                element.attributes.style = element.attributes.style.replace( /(?:^|\s)text-align\s*:\s*(\w*);?/i , '' );
                                element.attributes.align = align;
                            }
                        }
                    }

                    if ( !element.attributes.style )
                        delete element.attributes.style;

                    return element;
                }
            },

            attributes :
                {
                    style : function( value, element )
                    {
                        // Return #RGB for background and border colors
                        return convertRGBToHex( value );
                    }
                }
        } );
}

/**
* Convert a CSS rgb(R, G, B) color back to #RRGGBB format.
* @param Css style string (can include more than one color
* @return Converted css style.
*/
function convertRGBToHex( cssStyle )
{
    return cssStyle.replace( /(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi, function( match, red, green, blue )
        {
            red = parseInt( red, 10 ).toString( 16 );
            green = parseInt( green, 10 ).toString( 16 );
            blue = parseInt( blue, 10 ).toString( 16 );
            var color = [red, green, blue] ;

            // Add padding zeros if the hex value is less than 0x10.
            for ( var i = 0 ; i < color.length ; i++ )
                color[i] = String( '0' + color[i] ).slice( -2 ) ;

            return '#' + color.join( '' ) ;
         });
}

/*
Description: Hàm trả về ngày giờ hiện tại.
@isTime = false -> dd/MM/yyyy (vd: 01/06/2010)
@isTime = true -> dd/MM/yyyy HH:mm:ss (vd: 01/06/2010 01:09:08) 
slang:1 tiếng anh.
 flgtime : 0=> 00:00:00
 flgtime : 1=> current time
 flgtime : 2=> 23:59:59
 startdate = 1; thì ngày bắt đầu của tháng là ngày 1.
*/
function GetCurrentDateTime(slang,startdate,isTime,flgtime)
{
    var today = new Date();
    var sResult = '';

    var dd = today.getDate();
    
    if(startdate!=1){
       dd = dd < 10 ? "0" + dd : dd;  
    }else{
       dd ='01';   
    }

    var mm = today.getMonth() + 1;
    mm =  mm < 10 ? "0" + mm : mm;

    var yyyy = today.getFullYear();
    if(slang!=1){
      sResult = dd + "/" + mm + "/" + yyyy;   
    }else{
       sResult = yyyy + "-" + mm + "-" + dd; 
    }

    
    if (isTime)
    {     var strtime ='00:00:00';  
        if(flgtime==1){
            hh = today.getHours();
            hh =  hh < 10 ? "0" + hh : hh;

            m =today.getMinutes();
            m =  m < 10 ? "0" + m : m;

            ss = today.getSeconds();
            ss =  ss < 10 ? "0" + ss : ss;
            strtime = hh + ":" + m + ":" + ss; 
             
        }else if(flgtime==2){
            strtime='23:59:59';
        }  


        sResult += " " + strtime;
    }

    return sResult;
}

function isInteger(param) {
  //  alert(param) ;
  if (param=='')return true;
     regex  = /^(\d)+$/;
    if(regex.exec(param))
         return true;
    return false;
}

function isFloat(param) {
  if (param=='')return true;
     regex  =/^(\d)+(.(\d)+)*$/;
    if(regex.exec(param)){
        if (parseFloat(param)>=0) return true;
    }
        
    return false;
}

/*
Kiểm tra hàm xem có phải là kiểu ngay tháng năm hay ko
nếu có kiể dd/mm/yyyy hoặc dd/mm/yyyy hh:mm:ss thì trả về true
ngược lại trả về false
*/
function isDate(param) {
  
    if (param=='')return false;
     regex  =/^(([1-9]|0[1-9]|([1-2][0-9])|3[0-1]))\/(([1-9])|(0[1-9])|(1[0-2]))\/\d{4}$/;
     regex1  =/^((0[1-9]|([1-2][0-9])|3[0-1]))\/((0[1-9])|(1[0-2]))\/\d{4} (0[0-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9])$/; 
    if(regex.exec(param) || regex1.exec(param))
        return true;        
    return false;
}

function isDateTime(param){
        if (param=='')return true;
     regex  =/^((0[1-9]|([1-2][0-9])|3[0-1]))\/((0[1-9])|(1[0-2]))\/\d{4} (0[0-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9])$/;
    if(regex.exec(param))
        return true;        
    return false;
}

// Hoang Phuc 04/12/2010 Thay đổi giá trị cho the span
function fn_Waiting(value)
{
    if (value == 1)
    {
      $('#spanWaiting').html(PROCESS_DATA);   
    }
    else if (value == 2)
    {
      $('#spanWaiting').html(PROCESS_INSERT);   
    }
    else if (value == 3)
    {
      $('#spanWaiting').html(PROCESS_UPDATE);   
    }
    else if (value == 4)
    {
      $('#spanWaiting').html(PROCESS_DELETE);   
    }
}
//Trung add ham dung de dinh dang theo kieu tien te
function CurrentFormatted(amount)
{
    amount = String(amount);
    var delimiter = ","; // replace comma if desired
    var a = amount.split('.');
    var i = parseInt(a[0]);
    if(isNaN(i)) { return ''; }
    var minus = '';
    if(i < 0) { minus = '-'; }
    i = Math.abs(i);
    var n = new String(i);
    var temp = a;
    var a = [];
    while(n.length > 3)
    {
        var nn = n.substr(n.length-3);
        a.unshift(nn);
        n = n.substr(0,n.length-3);
    }
    if(n.length > 0) { a.unshift(n); }
    n = a.join(delimiter);
    if(temp.length < 2) { amount = n; }
    else { amount = n + '.' + temp[1]; }
    amount = minus + amount;
    return amount;
}
// ham lay ngay hien tai format theo dd/mm/yyyy
function getCurDate(){
    var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth()+1;
    var yyyy = today.getFullYear();
    if(dd<10){dd='0'+dd}
    if(mm<10){mm='0'+mm}    
    return dd+'/'+mm+'/'+yyyy;
    
}
// ham nay dung de kiem tra co phai so dung so trang can nhau den hay ko
// neu sai hoac lon hon so trang hien co thi se nhay ve trang truoc do
function checkIndexPage(currentPage){
    
    if((!isInteger(currentPage) || parseInt(currentPage) > parseInt($("#hdPageNum").val()) || parseInt(currentPage)<1)&&$("#hdPageNum").val()!=0){
      document.getElementById('txtcurrentpage1').value = document.getElementById('hdCurrPage').value   ;
      document.getElementById('txtcurrentpage2').value = document.getElementById('hdCurrPage').value   ;
      return false;
    }
    return true;
}

function trimAllSpace(sString)
{
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
}
// End Trung add  
//Start  Phuc addd
function unCheck(lat,long)
{
    var chk = $('#chkPriveLoc').attr('checked');
    if (chk == true)
    {
     $('#chkPriveLoc').attr('checked',false); 
    }
    showLocation(lat,long)  ;       
} 
function showLocation(lat,long)
{
    _global.gMap.InitMap('maptracking2'); 
     _global.gMap.PanTo(lat,long);
     _global.gMap.map.clearOverlays();
     var pnt = new GLatLng(lat, long);
     var marker3 = new GMarker(pnt);
     _global.gMap.map.addOverlay(marker3);
      $("#hdlatitude").val(lat);
      $("#hdlongitude").val(long); 
}
function FullPage()
{
  var lat = $("#hdlatitude").val();
  var long = $("#hdlongitude").val(); 
  var user = $("#hdgroupdata").val();      
   if (lat == 0 && long == 0)
  {
      alert("Vui lòng chọn đối tượng hiển thị");
      return false;
  }
    $('#full_page').dialog('open');   
    _global.gMap.InitMap('mapfullpage'); 
    _global.myMap.PanTo(lat,long);         
    _global.gMap.map.clearOverlays();    
    var pnt = new GLatLng(lat, long);
    var marker3 = new GMarker(pnt);
    _global.gMap.map.addOverlay(marker3);
     var chk = $('#chkPriveLoc').attr('checked'); 
      if (chk == true)
      {
        xajax_ShowPrivareLoc(lat,long,user);
     }   
}
function ViewPrivateLocation()
{
  
  var chk = $('#chkPriveLoc').attr('checked');    
  var lat = $("#hdlatitude").val();
  var long = $("#hdlongitude").val();
  var user = $("#hdgroupdata").val();
  if (lat == 0 && long == 0)
  {
      alert("Vui lòng chọn đối tượng hiển thị");
      $('#chkPriveLoc').attr('checked',false);    
      return false;
  }
   showLocation(lat,long);           
  if (chk == true)
  {
    xajax_ShowPrivareLoc(lat,long,user);
  }
}
// End  Phuc add
function fn_showwating()
 {
    document.getElementById("dvwt").style.display="";
    document.getElementById("dvwt").innerHTML = document.getElementById("divWaiting").innerHTML ;
 }
  
function CreateCalObject(objID, imgID)
{
    var theObj = document.getElementById(objID);
    if(!theObj)
    {
        tmpObj = document.getElementById(imgID);
        if(tmpObj)
        {
            tmpObj.style.display = "none";
        }
        return(false);
    }
    var objRet = new calendar2(theObj);
    if(!objRet)
    {
        tmpObj = document.getElementById(imgID);
        if(tmpObj)
        {
            tmpObj.style.display = "none";
        }
        return(false);
    }
    objRet.year_scroll = false;
    objRet.time_comp = false;
    return(objRet);
}
function CheckDate(date)
{    

    return ExpFullTime.test(date);   
}

function fn_compare_fromdate_todate(fromdate,todate)
{
    var ojReturn =false ;
    var df = Date.parse(toDate(fromdate ));
    var dt = Date.parse(toDate(todate));
    var ns = (dt - df);
    if( ns <= 0)
    {
       ojReturn = true ;
    }
    return ojReturn ;//true là ngày bắt đầu lớn hơn ngày kết thúc
}

function fn_isnumeric(value)
{
    var result = true ;
    var cnumber = Number(value);
    if (isNaN(cnumber)||cnumber <=0 ) 
    {
       result = false ;  
    }
    return result ;
}


